package battleshipgame.logic;


import java.util.*;
import battleshipgame.logic.Coordinate; 
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author user
 */
public class Matrics<T>  {

    private List<List<T>> m_matrics;
    private Iterator<T> it;

    public Matrics(int x, int y) {
        m_matrics = new ArrayList<List<T>>(x);
        for (int i = 0; i < x; i++) {
            m_matrics.add(new ArrayList<T>(y));
            for (int j = 0; j < y; j++) {
                m_matrics.get(i).add(null);
            }
        }
    }

    public T get(int x, int y) {
        return m_matrics.get(x).get(y);
    }

    public T set(int x, int y, T value) {
        return m_matrics.get(x).set(y, value);
    }
    public T getByCoordinate (Coordinate coordinate){
        return m_matrics.get(coordinate.getX()).get(coordinate.getY());
    }
            
    //public T setByCoordinate (Coordinate coordinate){
        //        return m_matrics.get(coordinate.setX()).get(coordinate.getY());
    //}

    public int size() {
        return m_matrics.size() * m_matrics.get(0).size();
    }

//    @Override
//    public Iterator<T> iterator() {
//        return new Iterator<T>() {
//
//            private Iterator<List<T>> itx = m_matrics.iterator();
//            private Iterator<T> ity = itx.next().iterator();
//
//            @Override
//            public boolean hasNext() {
//                return (itx.hasNext()) || ity.hasNext();
//            }
//
//            @Override
//            public T next() {
//                if (!ity.hasNext()) {
//                    ity = itx.next().iterator();
//                }
//                return ity.next();
//            }
//
//            @Override
//            public void remove() {
//                throw new UnsupportedOperationException("Not supported On matrics");
//            }
//        };
//    }
}
